using System.ComponentModel.DataAnnotations;

namespace Terra.Core.Security.Options;

/// <summary>
/// JWT配置选项
/// </summary>
public class JwtOptions
{
    /// <summary>
    /// 密钥
    /// </summary>
    [Required]
    public string SecretKey { get; set; }

    /// <summary>
    /// 发行者
    /// </summary>
    [Required]
    public string Issuer { get; set; }

    /// <summary>
    /// 接收者
    /// </summary>
    [Required]
    public string Audience { get; set; }

    /// <summary>
    /// 访问令牌过期时间（分钟）
    /// </summary>
    [Range(1, 1440)] // 1分钟到24小时
    public int ExpirationMinutes { get; set; }

    /// <summary>
    /// 刷新令牌过期时间（天）
    /// </summary>
    [Range(1, 365)] // 1天到1年
    public int RefreshTokenExpirationDays { get; set; }

    /// <summary>
    /// 是否启用刷新令牌轮换
    /// </summary>
    public bool EnableRefreshTokenRotation { get; set; } = true;
}